<?php
/**
 * Clase Base FN para BaseApFacturaFN
 *
 * @package    
 * @subpackage BaseApFacturaFN
 * @author     hans
 * @version    SVN:: BaseApFacturaFN.class.php,v 1.1 2012-10-07 03:37:37 Hans.parra Exp $
 */

require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/po/facturas/BN/ApFacturaBN.class.php');

class BaseApFacturaFN extends ApFacturaBN
{
  private static $fieldNames = array (
    'FacId'=>'facp_facId', 'Tipo'=>'facp_tipo', 'Num'=>'facp_num', 'ProveedorId'=>'facp_proveedorId', 'ProveedorNombre'=>'facp_proveedorNombre', 'PoNum'=>'facp_poNum', 'Fecha'=>'facp_fecha', 'FechaVcto'=>'facp_fechaVcto', 'Terms'=>'facp_terms', 'TermsDias'=>'facp_termsDias', 'Flete'=>'facp_flete', 'Moneda'=>'facp_moneda', 'TotalBruto'=>'facp_totalBruto', 'TotalImpuesto'=>'facp_totalImpuesto', 'TotalDcto'=>'facp_totalDcto', 'Neto'=>'facp_neto', 'Obs'=>'facp_obs', 'Status'=>'facp_status', 'CreaUsr'=>'facp_creaUsr', 'CreaFecha'=>'facp_creaFecha', 'ModifUsr'=>'facp_modifUsr', 'ModifFecha'=>'facp_modifFecha'  
  );

  public function select()
  {
    try
    {
      /*$tamPag = !property_exists($this, 'tamPag')?9999:$this->tamPag;
      $pagina = !property_exists($this, 'page')||$this->page==""?1:$this->page;
      $numeroRegistros = $this->selectNumRows();
      $limitInf = ($pagina-1)*$tamPag;*/

      $where = $this->buildConsult();
      //$orden = $this->buildOrderByField();

      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      //$sql = "SELECT facp_facId, facp_tipo, facp_num, facp_proveedorId, facp_proveedorNombre, facp_poNum, facp_fecha, facp_fechaVcto, facp_terms, facp_termsDias, facp_flete, facp_moneda, facp_totalBruto, facp_totalImpuesto, facp_totalDcto, facp_neto, facp_obs, facp_status, facp_creaUsr, facp_creaFecha, facp_modifUsr, facp_modifFecha FROM ap_factura WHERE 1 ".$where." ".$orden."  LIMIT ".$limitInf.",".$tamPag;
      $sql = "SELECT facp_facId, facp_tipo, facp_num, facp_proveedorId, facp_proveedorNombre, facp_poNum, facp_fecha, facp_fechaVcto, facp_terms, facp_termsDias, facp_flete, facp_moneda, facp_totalBruto, facp_totalImpuesto, facp_totalDcto, facp_neto, facp_obs, facp_status, facp_creaUsr, facp_creaFecha, facp_modifUsr, facp_modifFecha FROM ap_factura WHERE 1 ".$where;
        $result = mysql_query($sql);
      $num_rows = mysql_num_rows($result);
      $a_tmp = array();
      if($num_rows>0){
        while ($o_valor = mysql_fetch_object($result)) {
          $a_tmp[] = $this->insertObjectBN($o_valor);
        }
      }
      
      return count($a_tmp)>0?$a_tmp:null;
    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  public function selectNumRows()
  {
    try
    {
      $where = $this->buildConsult();

      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      $sql = "SELECT facp_facId, facp_tipo, facp_num, facp_proveedorId, facp_proveedorNombre, facp_poNum, facp_fecha, facp_fechaVcto, facp_terms, facp_termsDias, facp_flete, facp_moneda, facp_totalBruto, facp_totalImpuesto, facp_totalDcto, facp_neto, facp_obs, facp_status, facp_creaUsr, facp_creaFecha, facp_modifUsr, facp_modifFecha FROM ap_factura WHERE 1 ".$where;
        $result = mysql_query($sql);
      $num_rows = mysql_num_rows($result);
      
      return $num_rows;
    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  public function buildConsult()
  {
    try
    {
      $where = "";

      if($this->getFacId()){ $where .= " AND facp_facid = '".$this->getFacId()."'"; }
      if($this->getTipo()){ $where .= " AND facp_tipo = '".$this->getTipo()."'"; }
      if($this->getNum()){ $where .= " AND facp_num = '".$this->getNum()."'"; }
      if($this->getProveedorId()){ $where .= " AND facp_proveedorid = '".$this->getProveedorId()."'"; }
      if($this->getProveedorNombre()){ $where .= " AND facp_proveedornombre LIKE '".$this->getProveedorNombre()."'"; }
      if($this->getPoNum()){ $where .= " AND facp_ponum = '".$this->getPoNum()."'"; }
      if($this->getFecha()){ $where .= " AND facp_fecha = '".$this->getFecha()."'"; }
      if($this->getFechaVcto()){ $where .= " AND facp_fechavcto = '".$this->getFechaVcto()."'"; }
      if($this->getTerms()){ $where .= " AND facp_terms = '".$this->getTerms()."'"; }
      if($this->getTermsDias()){ $where .= " AND facp_termsdias = '".$this->getTermsDias()."'"; }
      if($this->getFlete()){ $where .= " AND facp_flete = '".$this->getFlete()."'"; }
      if($this->getMoneda()){ $where .= " AND facp_moneda = '".$this->getMoneda()."'"; }
      if($this->getTotalBruto()){ $where .= " AND facp_totalbruto = '".$this->getTotalBruto()."'"; }
      if($this->getTotalImpuesto()){ $where .= " AND facp_totalimpuesto = '".$this->getTotalImpuesto()."'"; }
      if($this->getTotalDcto()){ $where .= " AND facp_totaldcto = '".$this->getTotalDcto()."'"; }
      if($this->getNeto()){ $where .= " AND facp_neto = '".$this->getNeto()."'"; }
      if($this->getObs()){ $where .= " AND facp_obs = '".$this->getObs()."'"; }
      if($this->getStatus()){ $where .= " AND facp_status = '".$this->getStatus()."'"; }
      if($this->getCreaUsr()){ $where .= " AND facp_creausr = '".$this->getCreaUsr()."'"; }
      if($this->getCreaFecha()){ $where .= " AND facp_creafecha = '".$this->getCreaFecha()."'"; }
      if($this->getModifUsr()){ $where .= " AND facp_modifusr = '".$this->getModifUsr()."'"; }
      if($this->getModifFecha()){ $where .= " AND facp_modiffecha = '".$this->getModifFecha()."'"; }
      return $where;
    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  public function buildOrderByField()
  {
    try
    {
      $order_by = "";

      if(property_exists($this,'sortCampos')){
      if($this->sortCampos != ""){
        $a_valCampos = explode(";", $this->sortCampos);
        $a_valtype   = explode(";", $this->sortType);
        $order_by = " ORDER BY ";
        $a_order = array();
        foreach ($a_valCampos as $key => $val){
          $sTmpOrder = "";
          if(array_key_exists($val, self::$fieldNames)){
            $sTmpOrder .= self::$fieldNames[$val];
            switch ($a_valtype[$key]){
              case 1: $sTmpOrder .= " ASC"; break;
              case 2: $sTmpOrder .= " DESC"; break;
            }
            $a_order[] = $sTmpOrder;
          }
        }
        $order_by .= implode(", ", $a_order);
      }
      }
      return $order_by;
    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  /* B�squeda del registro por la llave primaria */
  public function selectByPK()
  {
    try
    {
      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      $sql = "SELECT facp_facId, facp_tipo, facp_num, facp_proveedorId, facp_proveedorNombre, facp_poNum, facp_fecha, facp_fechaVcto, facp_terms, facp_termsDias, facp_flete, facp_moneda, facp_totalBruto, facp_totalImpuesto, facp_totalDcto, facp_neto, facp_obs, facp_status, facp_creaUsr, facp_creaFecha, facp_modifUsr, facp_modifFecha FROM ap_factura WHERE 1 AND facp_facId='".$this->getFacId()."'; ";
        $result = mysql_query($sql);
      $o_Propel = $result ? mysql_fetch_object($result) : null;
      

      return $o_Propel?$this->insertObjectBN($o_Propel):null;

    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  /* Devuelve un objeto con m�todos de acceso */
  private function insertObjectBN($o_propel){
    $o_BaseApFacturaFN = new ApFacturaBN();
    $o_BaseApFacturaFN->setFacId($o_propel->facp_facId);
    $o_BaseApFacturaFN->setTipo($o_propel->facp_tipo);
    $o_BaseApFacturaFN->setNum($o_propel->facp_num);
    $o_BaseApFacturaFN->setProveedorId($o_propel->facp_proveedorId);
    $o_BaseApFacturaFN->setProveedorNombre($o_propel->facp_proveedorNombre);
    $o_BaseApFacturaFN->setPoNum($o_propel->facp_poNum);
    $o_BaseApFacturaFN->setFecha($o_propel->facp_fecha);
    $o_BaseApFacturaFN->setFechaVcto($o_propel->facp_fechaVcto);
    $o_BaseApFacturaFN->setTerms($o_propel->facp_terms);
    $o_BaseApFacturaFN->setTermsDias($o_propel->facp_termsDias);
    $o_BaseApFacturaFN->setFlete($o_propel->facp_flete);
    $o_BaseApFacturaFN->setMoneda($o_propel->facp_moneda);
    $o_BaseApFacturaFN->setTotalBruto($o_propel->facp_totalBruto);
    $o_BaseApFacturaFN->setTotalImpuesto($o_propel->facp_totalImpuesto);
    $o_BaseApFacturaFN->setTotalDcto($o_propel->facp_totalDcto);
    $o_BaseApFacturaFN->setNeto($o_propel->facp_neto);
    $o_BaseApFacturaFN->setObs($o_propel->facp_obs);
    $o_BaseApFacturaFN->setStatus($o_propel->facp_status);
    $o_BaseApFacturaFN->setCreaUsr($o_propel->facp_creaUsr);
    $o_BaseApFacturaFN->setCreaFecha($o_propel->facp_creaFecha);
    $o_BaseApFacturaFN->setModifUsr($o_propel->facp_modifUsr);
    $o_BaseApFacturaFN->setModifFecha($o_propel->facp_modifFecha);
    return $o_BaseApFacturaFN;
  }
}